Belief propagation for generalized matching

ABSTRACT

Entities may be matched to enhance the efficiency of various commercial activities using various system and method embodiments of the disclosed subject matter. Belief propagation on a graph data structure defining a bipartite or unipartite matching opportunity is used to calculate a best matching. In embodiments, functions are implemented based upon the match, such as executing sales between matched buyers and sellers in an online auction system. In embodiments, messages with scalar values carry information about the relative value of possible matchings, initially provided as weights or values for the possible matchings. Weights may depend on, for example, bids or costs. Messages may be passed, for example over a network between processors respective to the nodes. Belief values reflecting a best matching can be continuously updated for each node responsively to the value information and received messages to rank the matches respective to each node, which progressively improve. This allows short or complete terminations conditions to determine the goodness of the matching. Differing numbers of matches respective to each member of the disjoint sets and distributions of the desirability of different numbers of matches can be integrated in the matchings in respective embodiments.

This application claims the benefit of U.S. Provisional Application No.61/023,767, entitled “Belief Propagation for Generalized Matching” filedon Jan. 25, 2008, and U.S. Provisional Application No. 61/029,206,entitled “Belief Propagation for Generalized Matching” filed on Jan. 25,2008, each of which is incorporated herein by reference in its entirety.

This invention was made with government support under Grant No.IIS-0347499 awarded by National Science Foundation. The government hascertain rights in the invention.

Embodiments of the present invention relate generally to matching, and,more particularly, to methods, systems, one or more computers programproducts and one or more computer readable media for matching thingssuch as goods, services, and people to other entities, such as buyers,businesses, and people. Often these kinds of matchings present theopportunity to optimize some global good, such as revenue for a seller.Such an optimized matching can be handled using various methods.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a schematic diagram of a matching problem represented as abipartite graph showing matched and unmatched elements according to someembodiments of the disclosed subject matter.

FIG. 1B illustrates networked processors according to some embodimentsof the disclosed subject matter.

FIGS. 2A, 2B, and 2D are flow charts illustrating method processes formatching a set of things to a second set of things (or members of thesame set of things in a unipartite application) based upon beliefpropagation according to some embodiments of the disclosed subjectmatter.

FIGS. 2C and 2E illustrate data storage and processing elements of adistributed processing embodiment, according to some embodiments of thedisclosed subject matter.

FIG. 3 is a diagram of a system for matching a first class of things toa second class of things using belief propagation according to someembodiments of the disclosed subject matter.

FIG. 4 is a diagram of a system for matching a first class of things toa second class of things using belief propagation including parallelprocessors according to some embodiments of the disclosed subjectmatter.

FIG. 5 is a diagram of an arrangement for distributed processing forperforming generalized matching using belief propagation according tosome embodiments of the disclosed subject matter.

FIG. 6 is a diagram of a node processor according to some embodiments ofthe disclosed subject matter.

FIG. 7 is a diagram of a system for matching advertisers with searchterms using belief propagation according to some embodiments of thedisclosed subject matter.

FIG. 8 is a chart of a method of matching advertisers with search termsusing belief propagation according to some embodiments of the disclosedsubject matter.

FIG. 9 is a diagram of a system for matching dating service membersusing belief propagation according to some embodiments of the disclosedsubject matter.

FIG. 10 is a chart of a method of matching dating service members usingbelief propagation according to some embodiments of the disclosedsubject matter.

FIG. 11 is a diagram of a system for matching sellers and buyers orgoods/services to bids in an auction using belief propagation accordingto some embodiments of the disclosed subject matter.

FIG. 12 is a chart of a method of matching sellers and buyers orgoods/services to bids in an auction using belief propagation accordingto some embodiments of the disclosed subject matter.

FIG. 13 is a diagram of a system for resource allocation using beliefpropagation according to some embodiments of the disclosed subjectmatter.

FIG. 14 is a chart of a method of resource allocation using beliefpropagation according to some embodiments of the disclosed subjectmatter.

FIG. 15 is a diagram of a plurality of belief propagation processorsaccording to some embodiments of the disclosed subject matter.

FIG. 16 is a diagram of a belief propagation processor according to someembodiments of the disclosed subject matter.

FIGS. 17A and 17B illustrate data and computational aspects of thehandling of degree distribution matching opportunities which may be usedto modify the structures and methods of the other embodiments, accordingto some embodiments of the disclosed subject matter.

DETAILED DESCRIPTION

FIG. 1A is a schematic diagram of a matching problem represented as abipartite graph showing matched and unmatched elements according to someembodiments of the disclosed subject matter. The bipartite graph 100shows a first group of nodes 102 (u1-u4) matched to a second group ofnodes 104 (v1-v4). The first group may represent a first group ofentities or things such as goods, people, or resources and the secondgroup may represent a second group of entities or things such asconsumers, people, or resource users. Kinds of things that can make upthese first and second groups are numerous as should be clear from theinstant disclosure, but a common theme in most embodiments is thatentities of the first group are to be matched to entities of the secondgroup as a part of some kind of a transaction and the precise matchingmay correspond to some kind of aggregate value such as maximum totalrevenue. The matching problem posed by the context of the particularfirst and second groups and the aggregate value sought may also involveconstraints such as the number of first group of things that are to bematched to a given second group of thing. Groups could be distinguishedby any classification, and groupings are not limited by the examplesgiven.

In FIG. 1A, dashed lines (e.g., 106) represent possible edges and solidlines (e.g., 108) represent b-matched edges. By b-matched, it is meantthat the problem illustrated results in a desired b matches between eachof the first group of things to one or more second group of things. Inthe case shown on the bipartite graph 100, b=2 for each node of groups102 and 104, so that each node 102 or 104 is connected to two othernodes 104 or 102 with matched edges 108.

Typically, the information representing the potential assignment asindicated by all of the lines 106 and 108 can be supplemented withadditional information, generally, weights, which indicate somethingabout the value or cost associated with making each assignment. Here aweight W value of an edge is represented at 116. This weight informationmay serve as a basis for selecting an assignment that provides someoptimum or provides a basis for discriminating the goodness of oneassignment scheme versus another. The additional information may berepresented in the form of any suitable data structure to store a weightfor each edge, such as a weight matrix 118 with each row correspondingto a member of the first group and each column corresponding to a memberof the second group with each cell 120 at an intersections indicatingthe respective weight of an edge connecting each pair of members. Theweight matrix 118 represents different weights for each combination ofbuyer and seller.

The problem of matching members of one group to another can be describedin terms of a bipartite graph. Given a bipartite graph (which can berepresented by 100) and associated weight data, a method can be used toperform a matching based on belief propagation. Here the example of asituation where it is desired to match suppliers with customers will beused to illustrate the method. One or more computers may be providedwith information defining supplier and customers, which are referred toherein as “nodes,” which information may be considered to define abipartite graph 100. Each supplier node (u 102 or v 104) is connected toa customer node (v 104 or u 102) by an edge 108 so the one or morecomputers is supplied with the potential edges 108 of all the nodes 102,104 mapping from a supplier node to a customer node. The one or morecomputers is also provided with access to weight data, for example amatrix 118 with a weight value 119 for each edge of the bipartite graphdata structure. The process executed by the one or more computers issuch that information is recorded and updated respective of each node,such that a subprocess is performed for each node that communicates withother nodes. In this example, the weight data may be total cost of goodsand the optimum matching would coincide with maximum exchange of revenuebetween buyers and sellers.

Referring now also to FIG. 1B, according to this and other embodiments,the matching problem may be distributed among multiple processors 142and 144 communicating over a network such that each can send and receivemessages, the links being depicted figuratively as connecting lines 140.For the present example, each node 102 or 104 may correspond to arespective node processor 142 or 144. An alternative would be that eachprocessor would correspond to multiple nodes, but for the sake ofdiscussion, the case where there is a separate processor for each nodewill be assumed. In such a case only a portion of the weight data in theweight matrix 118 may be provided to each supplier node processor 142,the portion being sufficient to indicate the weights of the edges thatconnect each supplier to all its potential customers (e.g., all theother customers). Similarly, only a portion of the weight matrix may beprovided to each customer node processor 144 indicating the weights ofthe edges that connect the customer to all its potential suppliers. Thenode processors can access the respective weight information on common(e.g., central) or distributed data stores (e.g., respective of eachnode 142, 144 or community of node processors 142, 144).

Thus, each supplier or customer node may only require access to avector, defining the potentially connected customer and supplier nodeweights. In an architecture embodiment for solving the bipartite graphproblem, the graph and matrix data may be apportioned among differentcomputers or processors such that each receives only the lists of itssuppliers or customers and the associated weights. Other than that, theonly other information required for a complete solution, as will becomeclear below, is a train of messages from other nodes, where each messagemay be a simple scalar.

A matching can be obtained that progressively seeks an optimization ofthe above problem by having each customer node keep a score of, forexample, how much better buying from each supplier node is than buyingfrom other suppliers. Also, each buyer node may keep a score of how muchbetter selling to each customer node is than selling to other customers.Initially, the score may be just the dollar values represented by theweights. In the process described below, figuratively speaking, as thescores are updated, the supplier nodes tell the customer nodes how muchpotential money is lost if they are chosen according to their currentscores and the customers tell the suppliers similarly. All the scoresare continuously updated using this data which may be described aspassing messages among the nodes, where the messages contain theinformation to keep score. Eventually, if the scores are updatedaccording to subject matter described below, the scores progress towardan optimum sorted list of suppliers for each customer and a sorted listof customers for each supplier. Then each supplier or customer node'sinformation can be used to select that supplier or customer's best oneor more matches.

In the approach described, each node updates a value corresponding toeach of the supplier nodes and customer nodes, with a processor. Theprocess may be described as “belief propagation,” and entails passingmessages between adjacent nodes. An important aspect of the approach isknowing when to stop passing messages and determine the best matchingsfrom the node's data. Because the approach can progress toward anoptimal solution (that is, when the operation 210, or similar in theother embodiments, is performed, the best matches found get better andbetter with the number of messages processed). Thus, the one or morecomputers could be programmed to stop after a period of time or after athreshold number of messages. An optimal solution can be obtained uponthe realization of another termination condition which is describedbelow.

Once the termination condition is met, the one or more computers, apredetermined number of supplier nodes and a predetermined number ofrespective customer nodes matching each selected supplier node, may beselected and provided to a client process, for example the matchings maybe displayed on a terminal for a user to see.

Note that the graph 100 includes a limited number of nodes and edges forillustration purposes. The number of nodes and edges in an actual graphdata structure for the embodiments described below may include a greateror lesser number of nodes/edges than the number of nodes/edges shown inFIG. 1A. Also, the b value for each node in a particular implementationmay be assigned a value other than 2 depending on the contemplatedmatching problem to be solved by the implementation.

Referring now to FIG. 2A through 2E, after providing the graph datastructure and the edge weight data (e.g., weight matrix or vectors toall the node processors) as indicated by the operation 204 of flow chart200, variables are initialized as indicated by the operation 206. Thelatter operation may include initializing values of data storageelements that store the values of the most recent messages received bythe node processor. An iterative process is performed at 208 by eachnode processor 230, 250 (see node processors in FIGS. 2C and 2E) togenerate messages and to process received messages until a terminationcondition 212 is met. Referring to FIGS. 2B and 2C, the multiplecustomer node processors 230 contain various updateable data stores 241,243, 245 which hold a weight vector 241, a received message vector 243,and a new message vector 245. Each node processor 230 also may storedata indicating the potential supplier nodes to which the nodecorresponding to the node processor 232 to may be potentially matched.This additional data may be inherent in the data stored at 241, 243, and245 depending on the data structure employed since the weight matrices,received message values, and new message values are each respective ofone of these attached node processors 232. Also, multiple supplier nodeprocessors 250 contain various updateable data stores 261, 263, 265which hold a weight vector 261, a received message vector 263, and a newmessage vector 265. Each node processor 250 also may store dataindicating the potential nodes to which the node corresponding to thenode processor 252 to which it may be potentially optimally matched, butthis data may be inherent in the other data as discussed above.

The node processor 230 receives messages from, and transmits messagesto, node processors 232 to which it is connected, each of whichcorresponds to another node in the respective disjoint set. In thisexample, each node processor 230 and 232 corresponds to a node of abipartite graph which has two disjoint sets U and V. The node processors232 each have the features of node processor 230. The function of eachnode processor 230 may be to derive messages from the data in the datastores 241, 243, 245 and transmit such messages and to receive messagesand update the data in the data stores 241, 243, 245. This is doneiteratively, in the subprocess 208, as shown in process 200 of in FIG.2A.

FIG. 2B illustrates an embodiment of operations within 208 of FIG. 2Aand FIG. 2C illustrates further operations within 208 of FIG. 2A.Similar operations are illustrated in FIG. 2D. FIG. 2B shows operationsa node in the first set U of the bipartite graph and FIG. 2D showsoperations a node in the second set V of the bipartite graph. Theoperations are the same, but the operand indices are different in orderto account for the set to which the node belongs.

However illustrated in FIG. 2A, the operations of FIG. 2B may be done byseparate processors respective of one or more nodes in the singlebipartite graph, by processors corresponding to subsets of nodes or by asingle processor. Thus, the iteration illustrated as a single process at208 may be performed by separate processors in an independent fashionbased on messages shared between them.

Referring in particular to FIG. 2B, at 242, the node processor 230performs calculations corresponding to node U_(i). At 242, intermediatevalues SM_(j) are calculated for each node V_(j) to which node U_(i) maybe matched using messages received from the V_(j) node processors. Theseintermediate values are simply SM_(j)=RM_(k)*exp(W_(i,k)) for k=1 to Nwith k≠j. (“exp” denotes exponentiation based on the natural logarithmand * represents multiplication) That is, the contribution of the termfor the message RM_(k) where k=j is skipped over. At 244, the list ofintermediate values SM_(j) is sorted and the term corresponding to thesupplier having the bth highest value is identified. The suppliers areindicated by the index j, so a value L is set to this index. At 248, newmessages NM_(j) are calculated to be sent to each supplier nodeprocessor 232 according to: NM_(j)=exp(W_(ij))/[exp(W_(i,L))*RM_(L)].This process at 248 is referred to herein as a message update process torefer to the fact that the sequence of messages continuously updates thebelief values calculated by other processors (not to imply that eachprocessor in all implementations would continuously calculate and updateits belief values, since this operation, for example as described at210, can be done once or repeatedly).

Referring in particular to FIG. 2D, at 262, the node processor 250performs calculations corresponding to node V_(i). At 262, intermediatevalues SM_(j) are calculated for each node U_(j) to which node V_(i) maybe matched using messages received from the U_(j) node processors. Theseintermediate values are simply SM_(j)=RMk*exp(W_(k,i)) for k=1 to N withk≠j. (“exp” denotes exponentiation based on the natural logarithm and *represents multiplication) That is, the contribution of the term for themessage RM_(k) where k=j is skipped over. At 264, the list ofintermediate values SM_(j) is sorted and the term corresponding to thecustomer having the bth highest value is identified. The customers areindicated by the index j, so a value L is set to this index. At 266, newmessages NM_(j) are calculated to be sent to each customer nodeprocessor 252 according to: NM_(j)=exp(W_(j,i))/[exp(W_(i,L))*RM_(L)].

Referring back to FIG. 2A, the new messages are passed between all thenode processors 232 and 252 until a termination condition 212 isreached. Operation proceeds based on whether the termination conditionhas been reached, as indicated at 212. The termination condition may be,for example, expiration of a watchdog timer or a number of messagesreceived by each of the processors. Another alternative, and one thatprovides an optimum solution, is for each node processor to terminatewhen the messages stop changing. That is, the more recent message iscompared to the previous message and if they are the same, the processorstops processing for sending node, or when all messages are the same ascorresponding prior messages processing for all nodes can be halted. Theoperation 212 may also include updating the data stores 243 or 263.

As mentioned, the termination condition can be defined as reaching asteady state with respect to message updating, that is, the changes inmessages stops. Alternatively, the steady state can be defined as nofurther message updates being sent if the sending processor makes thedetermination that the updates are not changing, or when a number ofupdate message being sent or received is below a certain threshold.Alternatively, the termination condition can be defined in terms of anumber of iterations of message updating or a number of messages sent(either an aggregate number or a number per node). In anotheralternative, the termination condition can be defined as the elapsing ofa predetermined period of time. If the termination condition has beenreached, processing continues with the selection, for an input node, ofa predetermined number of supplier nodes or a predetermined number ofcustomer nodes, as indicated at 214. Otherwise processing returns to theoperation indicated at 208 and discussed above.

At 210, each node can calculate a vector showing the optimal matches.This can be done by U nodes by enumerating the values ofe×p(W_(i,k))*RM_(i) over k and selecting the b largest values. This canbe done by V nodes by enumerating the values of e×p(W_(k,i))*RM_(i) overk and selecting the b largest values. Note that the RM values arerespective of the U of V node for which the calculation is done.

The Appendix I gives an explanation of the operations 208 and 210 andsome further detail and analysis.

Note that the graph data structure can be any type of data structuresuitable for use with generalized matching using belief propagation,such as a bipartite graph data structure. The graph data structure cancontain one or more nodes of the same group (unipartite case) ordifferent groups (bipartite case). For example, the graph data structurecan include supplier nodes and customer nodes, where each supplier nodecan be connected to one or more customer nodes, and vice versa. Inrespective embodiments, the graph node data structure elementscorrespond to physical entities such as suppliers, customers, goodsand/or services. In addition, in embodiments, the nodes correspond toother entities as described below with respect to other embodiments.

The weight data, such as represented by the weight matrix discussedabove may represent a profit value for each edge between two nodes ofthe graph data structure. The weight matrix may also be a cost matrixrepresenting a cost associated with a respective matching with suitablevalues for the terms to suit the computational methods. In the case of aprofit matrix, the matching process typically includes a function toenhance and/or maximize profit. And in the case of a cost matrix, thematching process typically includes a function to reduce and/or minimizecost. The values in the profit matrix can be negative, zero, positive ora combination of these values.

An exemplary weight matrix may be represented by a data structure havinga record corresponding to each node. The record for each node caninclude a list of adjacent nodes and a profit value for each of theadjacent nodes. The term “adjacent” refers to the nodes to which a givennode may be connected in the same (unipartite case) or a disjoint set(bipartite case). The items of data in the profit matrix can representphysical entities or values such as actual supplier capacity, actualcustomer demand, monetary amounts of bidding or asking prices, monetaryamounts of profit, distances, monetary costs, and/or the like. A portionof the profit matrix can be selected and provided to a respective nodeprocessor. The selected portion can represent only the profit matrixrecord corresponding to each respective node processor. By providingonly a portion of the profit matrix to each node processor, data storageand transfer requirements can be reduced.

In operation 208, electronic messages are passed between adjacent nodes,which may be networked or communicate by a bus or any other datacommunication system. The node processor can be a computer, a singleprocessor on a device with multiple processors, or any suitable machinecapable of making the described computations and sending and receivingthe described data. As described above, value (or data content) of eachmessage is determined according to a compressed message update process.Received messages may be stored by the processor in an electronicmemory, such as, for example, random access memory (RAM), nonvolatilestorage, a database or any suitable data store. The operation 210 can beperformed the respective node processors. Downstream processing 214 mayinclude a process that corresponds to the particular application. Forexample, if the bipartite graph may describe an application in whichsearch queries or other key words terms appearing on web pages areassigned to bidders, as described in U.S. patent application Ser. No.11/285,126 (published as U.S. Publication No. 2007/0118432) to Vaziraniet. al., filed Nov. 21, 2005, which is hereby incorporated by referencein its entirety. In that case, a first set of nodes would be the biddersand a second set of nodes would be the sellers and the downstreamoperation would include placing the advertisements corresponding to thebidders to corresponding locations on one or more web pages, forexample, alongside search results or on other web pages.

The general opportunity of matching bidders to advertising opportunitieson the web can include placing advertisements in a location (such as aweb page, a real time data stream such as a movie, a broadcast, anetcast, a feature such as a billboard or product placement in a datastream or other medium such as an online game world, or any other typeof media outlet or scheme) and time (the instant advertisingopportunity, for example defined by time and location, referable to as“advertising spots”). The bidders for advertising spots can beindividuals, corporations, or virtual entities such as entities ingames, such as avatars.

In the above and further embodiments in which multiple processors areused to perform belief propagation, respective processors can be linkedby any suitable mechanism which may include local or distributedinput/output systems including electronic or optical input/outputsystems and systems providing communication over networks, busses,crossbar switches, or any other suitable data interchange system.

An important example of advertising spots is auction systems for placingadvertisements in response to events such as the submission of certainkeywords or phrases in search engines or the contents of web pagesaccessed in a search. The advertisements can be placed alongside searchresults and on target web pages responsively to the content of thetarget or the terms used in a search query. In auction systems, userscan enter bids for terms. In addition, the users can provide budgets orquotas to limit the number of advertisements that are placed, therebyallowing the user to maintain an advertising budget.

The auction provider, for example, an Internet search engine provider,can receive all or a part of the bid for the advertising spot. Also,additional factors, such as click-through rates, may also be taken intoaccount in determining the bidding schedule.

The nodes selected at 214 (and corresponding operations in otherembodiments) may be matched based on updated belief values. For example,in a b-matching problem, the b nodes having the highest belief valueswith respect to an input node are selected. Ties can be handled in anumber of ways including by using a “coin toss” to select between tyingnodes, or, alternatively or in addition, a small random value can beadded to the weight or profit matrix value for each edge so that no twonodes are likely to tie. The selected nodes can be provided as output toanother process or system. Processing can terminate at 216.

The 202-216 procedure may be repeated in whole or in part in order toaccomplish a variety of transactions involving matching based onassociated values of respective matches and data limiting or variablyvaluing the number of matches. In the simplest case, the data limitingthe number of matches is a single constant value (b) for all theentities to be matched. In more general cases, where methods and systemsfor addressing them are discussed below, the number of desired matchescan be respective of each node, that is, there may be quotas for up to2n different matches, each respective of a different party. For example,each seller may identify a particular quota and each buyer may identifya particular quota. Also, the matches may be made according to therelative cost or profit or some other measure indicating thedesirability associated with of a respective number of matches. Thisscenario is also discussed below.

Belief values may be updated for the entire graph data structure andthen matching results may be provided for a plurality of nodes ofinterest before the belief values of the graph are updated.Alternatively, because the matching may result in changes to one or morenodes in the graph as a result of being selected as matching nodes(e.g., a supplier's amount of available goods may be reduced or acustomer's requirement for goods may have been met), the belief valuesmay need to be recomputed each time a matching is performed for a node.

FIG. 3 is a block diagram of a system for generalized matching usingbelief propagation according to some embodiments of the disclosedsubject matter. In particular, a belief propagation matching system 300includes a group of suppliers 302 and a group of customers 304. Each ofthe suppliers 302 and customers 304 are represented as nodes in a graphdata structure 306. The system 300 also includes a profit (or cost)matrix 308. The graph data structure 306 and profit matrix 308 areprovided as input to a belief propagation matching processor 312. Alsoprovided as input to the belief propagation matching processor 312 isinput data 310. The belief propagation matching processor is coupled toa data storage 314 and provides matching results 316 as output.

In operation, the suppliers 302 and customers 304 are stored as nodes orvertices of the graph data structure 306. The profit matrix 308 storesthe edge profits (or weights) for each edge connecting a supplier andcustomer. The graph data structure 306 and the profit matrix 308 caneach be stored in the data storage 314.

The belief propagation matching processor 312 receives the input 310,which can be, for example, a node of interest for b-matching. The beliefpropagation matching processor 312 uses the graph data structure 306 andthe profit matrix 308 to perform the b-matching according to the methoddescribed above with respect to FIG. 2A. The messages and beliefs arestored in the data storage 314. Once the termination condition is met,the belief propagation matching processor 312 outputs the matchingresults 316. The termination condition can include any of thetermination conditions described above with reference to the conditionalbranch 212 in FIG. 2A.

The belief propagation matching processor 312 can operate according tosoftware instructions retrieved from a one or more computers readablemedia. The software instructions, when executed by the beliefpropagation matching processor 312, cause the belief propagationmatching processor 312 to perform the belief propagation generalizedmatching methods as described above.

For example, when adapted for an advertisement/keyword matchingapplication, an implementation of software for the belief propagationmatching processor 312 can function according to the following pseudocode:

Begin Pseudo Code // define data structures and variables data structureGraphNode { float received_msgs[ max_num_of_neighbors ] }; GraphNode ads[num_of_ads]; GraphNode keywords [num_of_keywords]; int Profit_Matrix[num_of_ads] [num_of_keywords]; int b=3; Boolean Message_Changed = true;initialize all received_msgs to 1; // to compute messages first timearound initialize Profit_Matrix with bid values; // start a main loop tocontinue until no messages are changed while ( Message_Changed == true ){ Message_Changed = false; // switch off loop unless a message changes// send messages from ads to keywords for i=1 to num_of_ads { for j=1 tonum_of_keywords { sorted_msgs[ ] = sorted list of ads[i].received_msgs[] * corresponding exp(Profit_Matrix[ ][ ]) values excluding that fromkeyword node j; L = original index of sorted_msgs[b]; // get index (ornode) of the bth received msg*profit; old_rcvd_msg =keywords[j].received_msgs[i]; keywords[j].received_msgs[i] =exp(Profit_Matrix[i][j]) / (exp(Profit_Matrix[i][L]) *ads[i].received_msgs[L]); if old_rcvd_msg not equal tokeywords[j].received_msgs[i] then Message_Changed = true; } end j loop }end i loop // send messages from keywords to ads for j=1 tonum_of_keywords { for i=1 to num_of_ads { sorted_msgs[ ] = sorted listof keywords[j].received_msgs[ ] * corresponding exp(Profit_Matrix[ ][ ])values excluding that from ad node i; L = original index ofsorted_msgs[b]; // get index (or node) of the bth received msg*profit;old_rcvd_msg = ads[i].received_msgs[j]; ads[i].received_msgs[j] =exp(Profit_Matrix[i][j]) / (exp(Profit_Matrix[L][j]) *keywords[j].received_msgs[L]); if old_rcvd_msg not equal toads[i].received_msgs[j] then Message_Changed = true; } end i loop } endj loop } end while loop - we are now done - no messages are changing //now get the belief values for a keyword node of interest for i=1 tonum_of_ads { belief_values[i] =keywords[keyword_of_interest].received_msgs[i] *Profit_Matrix[i][keyword_of_interest]; } end i loop sort belief_values[]; output largest b belief _values[ ]; End Pseudo Code

The above pseudo code represents an example of a linear implementationof the belief propagation method described above. Simplifications havebeen made for purposes of illustration including assuming that each nodeexchanges messages with all nodes of the corresponding type.Simplifications have been made in the flow charts of FIG. 2A and similarflow charts as well, which are for purposes of illustration and it isrecognized that a commercial implementation of the basic methods canvary and can be made more efficient than disclosed in the flow chartsand pseudo code. For example, in an actual implementation, nodes mayonly exchange messages with their respective neighbor nodes (the term“neighbor is used here to identify claims that can be connected), eachbeing assigned to a respective processor. Also, the pseudo code exampleabove continues until no messages are changed. As described above, thereare other termination conditions that can be used with the beliefpropagation method. Another assumption made to simplify the illustrationexample is that the b value for all types of nodes is constant and thesame for all. It will be appreciated that, in a contemplatedimplementation, nodes may have different b values and that the b valuesmay be constant or variable.

The belief propagation matching processor 312 can be a general-purposeone or more computers adapted for generalized matching using beliefpropagation, a special-purpose one or more computers for generalizedmatching using belief propagation, a programmed microprocessor ormicrocontroller and peripheral integrated circuit element, an ASIC orother integrated circuit, a digital signal processor, a hardwiredelectronic or logic circuit such as a discrete element circuit, aprogrammed logic device such as a PLD, PLA, FPGA, PAL, or the like.

The data storage 314 can be a database such as a relational database orany other suitable arrangement of data. The data can be stored in aphysical media such as a volatile or nonvolatile electronic memory, amagnetic storage device, and/or an optical storage device.

FIG. 4 is a block diagram of a system for generalized matching usingbelief propagation including parallel processors according to someembodiments of the disclosed subject matter. In particular, a beliefpropagation matching system 400 includes a group of suppliers 402 and agroup of customers 404. Each of the suppliers 402 and customers 404 arerepresented as nodes arranged and stored in a graph data structure 406.The system 400 also includes a profit (or cost) matrix 408. The graphdata structure 406 and profit matrix 408 are provided as input to abelief propagation matching system 412. Also provided as input to thebelief propagation matching system 412 is input data 410. The beliefpropagation matching system 412 is coupled to a data storage 414 andprovides matching results 416 as output.

In operation, the suppliers 402 and customers 404 are stored as nodes orvertices of the graph data structure 406. The profit matrix 408 storesthe edge profits (or weights) for each edge connecting a supplier andcustomer. The graph data structure 406 and the profit matrix 408 caneach be stored in the data storage 414.

The belief propagation matching system 412 receives the input 410, whichcan be, for example, a node of interest for b-matching. The beliefpropagation matching processor 412 uses the graph data structure 406 andthe profit matrix 408 to perform a distributed form of beliefpropagation for b-matching described above with respect to FIG. 2A. Themessages are updated using distributed (or parallel) processing andstored in the data storage 414. Once the termination condition is met,the belief propagation matching system 412 makes the matching results416 available as output. The termination condition can include any ofthe termination conditions described above with reference to theconditional branch 212 of FIG. 2A.

The belief propagation matching system 412 can be a distributed orparallel processing system. For example, the belief propagation matchingsystem 412 can be implemented as a grid or cloud computing system. Thedata storage 414 can be an Internet-based scalable storageinfrastructure such as Amazon.com's Simple Storage Service (S3) or anyother data storage system suitable for use with the belief propagationmatching system 412.

The belief propagation matching system 412 can also be implementedaccording to any other suitable distributed or parallel processingarchitecture, including hardware and software systems containing morethan one processing element or storage element, concurrent processes,multiple programs, and/or the like.

The systems and methods described above and below, herein, can beapplied to matching nodes in a system represented by a unipartite graphdata structure such as a social network. The systems and methods can beused to provide matching results such as social network referrals,connecting websites to other websites, routing messages on a networksuch as the Internet, and chip layout. In unipartite matching problemsall nodes are of the same type or class (e.g., social network members)rather than disjoint sets and they can be matched with other nodes basedon a value matrix having a weight or value for each edge of theunipartite graph data structure. For example, in the case of FIG. 1A, aunipartite version would have “u” nodes (102) that are the same as the“v” nodes (104).

FIG. 5 is a diagram of an arrangement of distributed processors forgeneralized matching using belief propagation according to someembodiments of the disclosed subject matter. Although only eight areshown, any number can be provided. In particular, in this example, afirst group of node processors (502-508) correspond to nodes u1-u4 ofthe graph shown in FIG. 1A, respectively. A second group of nodeprocessors (512-518) correspond to nodes v1-v4 of the graph shown inFIG. 1A, respectively. Each of the node processors (502-508 and 512-518)are independently coupled to a network 510 (e.g., the Internet, a localarea network, wide area network, wireless network, virtual privatenetwork, custom network, bus, backplane, or the like). By beinginterconnected through the network 510, each of the node processors(502-508 and 512-518) can communicate with the others and send/receivemessages according to the belief propagation method described above.Also, each of the node processors (502-508 and 512-518) can be queriedindependently for its b-matched list generated by the belief propagationmethod described above. Not only can each node be independently queried,but each node can arrive at its optimal b-matched solution withoutrequiring knowledge of the other nodes' solutions (i.e., the beliefpropagation method is “privacy protecting” with respect to each node).

The solutions for each node can be aggregated in a central data storagelocation or may be retained individually at each node, or groupedaccording to a criterion (e.g., grouping all supplier matches into alist and all customer matches into another list). This aspect is alsodiscussed elsewhere in the present application and so will not beelaborated upon here.

The network 510 can be a network such as the Internet, a local areanetwork (LAN), a wide area network (WAN), a virtual private network(VPN), a direct connection network (or point-to-point), or the like. Ingeneral, the network can include one or more now known or laterdeveloped technologies for communicating information that would besuitable for performing the functions described above. The selection ofnetwork components and technologies can depend on a contemplatedembodiment.

In FIG. 5, one processor is shown for each node for clarity andsimplicity of illustrating and describing features of an embodiment. Itwill be appreciated that each processor may perform the beliefpropagation method for more than one node.

FIG. 6 is a diagram of a node processing system for generalized matchingusing belief propagation according to some embodiments of the disclosedsubject matter. In particular, the node processing system 600 includes abelief propagation node processor 602 that is adapted to access beliefpropagation software on one or more computer-readable media 604. Thebelief propagation node processor 602 is coupled via link 606 to anetwork 608. The belief propagation node processor 602 is also coupledto an electronic data store that has stored therein a profit matrixsubset 610, received messages 612 and belief values 614.

In operation, the belief propagation node processor 602 loads the beliefpropagation software 604 from the one or more computer readable mediaand executes the software. Once executing, the software directs thebelief propagation node processor 602 to perform generalized matchingusing belief propagation according to the method described above. Thebelief propagation node processor 602 accesses the profit matrix subset610 and computes an updated message value for each connected (orneighbor or adjacent) node and sends the respective updated message toeach connected node. The belief propagation node processor 602 alsoreceives updated messages from the connected nodes. The receivedmessages are stored in the received messages area 612 of data storage.The received messages 612 are used in connection with the profit matrixsubset 610 to update belief values 614 for each of the connected nodes.The profit matrix subset 610 is the portion of the profit matrix thatincludes data regarding nodes connected to the node represented by thebelief propagation node processor 602.

Once a termination condition has been reached, the belief propagationnode processor 602 can sort the belief values 614 and the b connectednodes with the largest belief values can be selected as the b-matchingsolution for the node corresponding to the belief propagation nodeprocessor 602. It will be appreciated that the selection of the largestbelief values is applicable to an example in which a profit matrix isused and it is desirable to enhance and/or maximize profit and thatother sorting and selection techniques may be used in a particularembodiment, for example in an embodiment employing a cost matrix it maybe appropriate to select the smallest belief values.

The belief propagation software on a one or more computers readablemedia 604, when executed, can cause the belief propagation nodeprocessor 602 to operate according to the following pseudo code:

Begin Pseudo Code // define data structures and variables floatReceived_Msgs [num_of_neighbors]; graph node address Neighbor_Nodes[num_of_neighbors]; int Profit_Matrix [num_of_neighbors]; int b=3;Boolean Message_Changed = true; initialize all Received_Msgs to 1; // tocompute messages first time around initialize Profit_Matrix with bidvalues of neighbors; // start a main loop to continue until no messagesare changed while ( Message_Changed == true ) { Message_Changed = false;// switch off loop unless a message changes Receive Messages fromneighbors; Compare new Received Messages with corresponding storedReceived Messages to look for changed messages; If Any Changed MessagesReceived { Store Received Messages in Received_Msgs[ ]; Message_Changed= true; for j=1 to num_of_neighbors { Sorted_Msgs[ ] = sorted list ofReceived_Msgs[ ] * corresponding Profit_Matrix[ ] values excluding j; L= original index of Sorted_Msgs[b]; // get index (or node) of the bthreceived msg*profit; Message = exp(Profit_Matrix[j]) /(exp(Profit_Matrix[L]) * received_msgs[L]);  Send Message toNeighbor_Node[j]; } end j loop } end if changed message changed } endwhile loop - we are now done - no messages are changing // now get thebelief values for this node for j=1 to num_of_neighbors {belief_values[j] = received_msgs[j] * Pofit_Matrix[j]; } end j loop sortbelief_values[ ]; output largest b belief_values[ ]; End Pseudo Code

The above pseudo code example makes several assumptions in order tosimplify the pseudo code for illustration purposes. For example, the bvalue is a constant value. Also, the code is assumed to be used on aprocessor that is computing the belief propagation for a single node ofthe graph, so that the indexing can be simplified for illustration.

Generalized matching or auction problems find the best assignment ofgoods to consumers or advertisers to consumers when given a matrix ofweights or value for each possible assignment. Generalized bipartitematching is 100% solvable by linear programming.

The disclosed subject matter approach may employ belief propagationwhich provide certain advantages and can provide solutions which are100% optimal. For example, it can provide solutions that are optimal inan efficient manner and can scale up to problems involving millions ofusers and advertisers. Other applications include networkreconstruction, image matching, resource allocation, online dating,sensor networks, and others.

Online content providers can use the disclosed subject matter to bettermatch advertising after a user enters a search term. Typically, onlinecontent providers show the top advertisers that bid the highest amountfor a particular search term. Typically, this is done by performing ageneralized matching and then controlling the display of theadvertisement accordingly.

FIG. 7 is a block diagram of a system for matching advertisers withsearch terms using belief propagation according to some embodiments ofthe disclosed subject matter. In particular, the system 700 includes asearch engine/content provider 702 that is coupled to a beliefpropagation system for advertisement/keyword (search term) matching 704.The search engine/content provider 702 is also coupled to an electronicdata store having stored therein data representing a plurality ofadvertisers (706-708) each having a respective set of search terms (orkeywords). advertisement associated with each keyword, and a bid forplacing each advertisement (710-712). The search engine/content provider702 receives search terms, keywords and/or uniform resource locators(URLs) 714 from one or more users. In response to the received input714, the search engine/content provider 702 performs searchterm/advertiser matching using the belief propagation system foradvertisement/keyword (or search term) matching 704 to match a number ofadvertisements (three in this example) to the search term input, asdescribed below with respect to FIG. 8. The b-matching advertisements(e.g., 3) are then displayed on a search engine results page (or contentpage of a partner website) 716 as displayed advertisements 718.

The b-matching advertisements may then be automatically placed anddisplayed on a search engine's results page. In other embodiments, otheractions can be automatically implemented such as allocatingcomputational resources to users, outputting authorization codes toallow users to access physical equipment (such as backhoes, automobiles,tools, or other mechanical equipment). The number and variety ofconsequential actions that can be automatically initiated or culminatedas a result of the matchings made are varied and will depend on theapplications.

In this example, the nodes of the graph data structure include theadvertisers/advertisements and the keywords (or search terms). Theprofit matrix includes the bid prices for each ad by each advertiser.The bid prices may be used as raw values or may be manipulated in orderto arrive at a profit for the bid. The b value represents the maximumnumber of advertisements to be displayed (e.g., 3). However, eachadvertiser/advertisement node may also be subject to other constraintson its belief value such as a quota of advertisements to be displayedduring a given period of time or a quota on an amount of money to bespent during a given period of time. These constraints may affectwhether or not an advertiser/advertisement is selected as matching for akeyword, even if the bid for that advertiser/advertisement is highenough that it would normally be selected.

Advertisers may seek to manipulate or “game” the advertising bid system.The belief propagation methods and systems described above can bemodified to provide enhanced protection against bid or ad systemmanipulation. For example, one bid manipulation scheme includesattempting to deplete a competitor's ad budget by placing a bid justless than the winning bid, this causes the price actually paid by thewinning bidder to be artificially high and thus depletes thecompetitor's budget faster than would normally occur. After thecompetitor's budget is depleted, their bid is no longer the highest andthe ad can be placed at a lower cost by the manipulator. One techniquefor combating this type of manipulation is to augment the b-matchingalgorithm with a module that can select a winner other than the firstplace or b-highest matches. By selecting an ad to be placed other thanthe normal matching ads, the manipulator's ad can be chosen, thusdepleting the manipulator's budget as well. This discourages advertisersfrom placing artificially high bids in an attempt to deplete acompetitor's budget. It will be appreciated that other now known orlater developed ad auction manipulation prevention measures can be usedwith the disclosed subject matter.

The system for matching advertisements with search terms or keywords 700can comprise a second system (not shown) in addition to the beliefpropagation matching system for advertisement keyword matching (704).The second system can be a bid web server, which also would typicallycomprise one or more computer storage media, one or more processingsystems and one or more databases. Conventional web browsers, running onclient computers can be used to access information available through thebid web server and permit advertisers to place bids for desired keywordsthat will be queried through the search engine or content provider. Thebid web server can be accessed through a firewall, not shown, whichprotects account information and other information from externaltampering. Additional security measures such as Secure HTTP or theSecure Sockets Layer may be provided to enhance the security of standardcommunications protocols.

FIG. 8 is a chart of a method of matching advertisers with search termsusing belief propagation according to some embodiments of the disclosedsubject matter.

Processing begins at 802 with provision 804 of a graph data structureand other data. The graph data structure nodes or vertices representadvertisers and keywords to be matched. For example, the graph datastructure can include advertiser nodes that represent an advertisementfrom a particular advertiser to be displayed when a users enters one ofa group of keywords that are of interest to the advertiser. The graphdata structure can include keywords or search terms that correspond tothose entered by users and which need to have a set of advertisementsmatched with in order to enhance and/or maximize revenue generated frompay-per-click advertising, for example. A profit matrix is alsoprovided. The profit matrix represents a profit value for eachadvertiser/advertisement node connected to a corresponding search termnode. At 806, variables are initialized. The latter operation mayinclude initializing values of data storage elements that store thevalues of the most recent messages received by the node.

Next, electronic messages are passed between adjacent or neighboringnodes as indicated at 808. A belief propagation processor or distributedprocessing system adapted to perform belief propagation sends eachmessage from a node based on the profit matrix values and receivedmessages of that node. The value (or data content) of each message isdetermined according to a compressed message update process, describedabove. Received messages are stored by the processor in an electronicmemory, such as, for example, RAM or a database. The message passing canbe performed iteratively until a termination condition is met. Aconditional branch based on the termination condition is indicated at812. As discussed elsewhere, a variety of conditions can be defined.

Belief values for each neighboring node are updated based on receivedmessages and stored as indicated at 810. The updating can be executed,for example, by the processor adapted to perform belief propagation. Thebelief value for each node is based on the received messages and theprofit matrix portion. If the belief value updating would result inchanges to messages already sent, then those messages are sent againwith updated values. However, if no belief values change or no messageupdates are needed, then the node does not send out messages. Thesettling of the node's belief values for adjacent nodes can indicatethat an optimal solution has been reached and the belief propagation hasconverged on a solution to the matching problem.

The b-matching advertiser/advertisement nodes matching an input searchterm are selected as indicated at 814. The selectedadvertiser/advertisement nodes are matched based on sorted beliefvalues. For example, in a b-matching problem, the b nodes having thehighest belief values (i.e., profit values) with respect to an inputnode are selected. The selected nodes can be provided as output toanother process or system. For example, the advertisements correspondingto the selected nodes can be displayed on the search engine results pageor content page associated with the search term. Then processing ends at816.

As for the embodiment 200 (as well as analogous operations in otherembodiments 1000, 1200, and 1444 described below), it will beappreciated that the sequence 802-816 may be repeated in whole or inpart in order to accomplish contemplated generalized matching usingbelief propagation. For example, the belief values may be updated forthe entire graph data structure and then matching results may beprovided for a plurality of nodes of interest before the belief valuesof the graph are updated. Alternatively, because the matching may resultin changes to one or more nodes in the graph as a result of beingselected as matching nodes (e.g., an advertiser's quota of ads or quotaof dollars spent may be reached), the belief values may need to berecomputed each time a matching is performed for a node.

FIG. 9 is a block diagram of a system for matching dating servicemembers using belief propagation according to some embodiments of thedisclosed subject matter. In particular, the system 900 includes adating service provider 902 that is coupled to a belief propagationsystem for dating service member matching 904. The dating serviceprovider 902 is also coupled to an electronic data store having storedtherein data representing a plurality of dating service members(906-908) each having a respective set of interests (910-912). Thedating service provider 902 receives the interests (910-912) from one ormore respective users (906-908). The interests (910-912) can be used togenerate a “profit” matrix (effectively captures a compatibility metric)for the users, for example, by generating a value representing theinterests in common for a given pair of users. In response to thereceived interests (910-912), the dating service provider 902 performsmember matching using the belief propagation system for dating servicemember matching 904 to match each member with b other members (e.g., fora fee a dating service may provide b introductions or matches to eachuser), as described below with respect to FIG. 10. The b matchingmembers may then be communicated to the member that they are matchedwith as an introduction (e.g., each user may receive an email listingthe members he or she has been matched with). For example, a results set914 (e.g., in an email or displayed on the user's page at the datingservice) can be provided for Member 1. Within the results are listed theb-matching members 915 selected to match Member 1. And, similarly, aresults set 916 (e.g., in an email or displayed on the user's page atthe dating service) can be provided for Member n. Within the results set916 are listed the b-matching members 918 that have been selected tomatch Member n.

In this example, the nodes of the graph data structure include themembers of the dating service. The “profit” matrix (or compatibilitymatrix) can include the predicted compatibility between a pair ofmembers. The b value represents the number of matchings of most likelycompatible members to be provided to each respective member (e.g., inaccordance with the service agreement with the member). However, eachmember node may also be subject to other constraints on its belief valuesuch as type of other member being sought, geographic preference, otherpreferences, a quota of matches to be provided during a given period oftime, or the like. These constraints may affect whether or not a memberis selected as matching for another member, even if the “profit” orcompatibility for that member is high enough that it would normally beselected.

FIG. 10 is a chart of a method of matching dating service members usingbelief propagation according to some embodiments of the disclosedsubject matter. Processing begins at 1002 and a graph data structure at1004 is provided. The graph data structure nodes (or vertices) representdating service members to be matched. A compatibility (or “profit”)matrix is also provided. The compatibility matrix represents acompatibility (or “profit”) value for each potential pairing of datingservice members. As described above, the compatibility value can bedetermined based on interests in common, or may be determined accordingto other suitable methods conventionally used by dating serviceproviders.

At 1006, variables are initialized. The latter operation may includeinitializing values of data storage elements that store the values ofthe most recent messages received by the node.

Next, electronic messages are passed between adjacent or neighboringnodes as indicated at 1008. The details are not repeated since they aresimilar to the operations detailed above and below. The message passingcan be performed iteratively until a termination condition is met asindicated by the conditional branch 1012.

Belief values for each neighboring node may be calculated based onreceived messages and stored as indicated at 1010. In this and the otherembodiments, the belief values can be calculated once after thetermination condition (as shown in the flow chart) or continuouslyupdated prior to the termination condition. The operations are describedabove and below and are therefore not detailed here again.

FIG. 11 is a diagram of a system for matching sellers and buyers in anauction using belief propagation according to some embodiments of thedisclosed subject matter. In particular, the system 1100 includes anauction service provider 1102 that is coupled to a belief propagationsystem for auction buyer/seller member matching 1104. The auctionservice provider 1102 is also coupled to an electronic data store havingstored therein data representing a plurality of sellers (1106-1108) eachhaving a respective set of goods/services being offered (1110-1112), anda plurality of buyers (1114-1116) each having a respective set ofgoods/services being sought (1118-1120). The auction service provider1102 receives the goods/services being offered (1110-1112) and thegoods/services being sought (1118-1120), which can be used to generate aprofit matrix for matching the buyers and sellers, for example, bygenerating a profit value for each seller selling his goods/services toa corresponding buyer seeking those goods/services.

In response to the received goods/services being offered (1110-1112) andthe goods/services being sought (1118-1120). the auction serviceprovider 1102 performs buyer/seller matching using the beliefpropagation system for auction buyer/seller matching 1104 to match eachbuyer with b sellers (e.g., such that the buyer's requirements are met),as described below with respect to FIG. 12. The b matching sellers maythen be communicated to the buyer that they are matched with in order tocomplete a transaction. For example, a results set 1122 that has theb-matching between buyers and sellers can be provided as output.Alternatively, the matches for a particular buyer or seller can becommunicated directly to that buyer or seller.

In this example, the nodes of the graph data structure representgoods/services being offered (1110-1112) and the goods/services beingsought (1118-1120). The profit matrix can have values based on aparticular buyer buying from a particular seller. For example, in thecase of a buyer, the b value can represent the number of matchingsellers needed to meet the buyer's requirements. In the case of aseller, the b value can represent the number of buyers needed topurchase the sellers goods/services being offered. However, each nodemay also be subject to other constraints on its belief value. Theseconstraints may affect whether or not a buyer/seller is selected asmatching for another buyer/seller, even if the profit for that matchingis high enough that it would normally be selected.

FIG. 12 is a chart of a method of matching sellers and buyers in anauction using belief propagation according to some embodiments of thedisclosed subject matter.

After beginning at 1202, a graph data structure is provided as indicatedat 1204. The graph data structure nodes or vertices represents auctionbuyers and sellers, and their respective goods/services, to be matched.A profit matrix is also provided. The profit matrix represents a profitvalue for each seller node connected to a corresponding buyer node. At1206, variables are initialized. The latter operation may includeinitializing values of data storage elements that store the values ofthe most recent messages received by the node.

Electronic messages are passed between adjacent or neighboring nodes asindicated at 1208. The details are not repeated since they are similarto the operations detailed above and below. The message passing can beperformed iteratively until a termination condition is met. This iscontrolled by a branch point 1212.

Belief values for each neighboring node are updated based on receivedmessages and stored as indicated at 1210. In this and the otherembodiments, the belief values can be calculated once after thetermination condition (as shown in the flow chart) or continuouslyupdated prior to the termination condition. The operations are describedabove and below and are therefore not detailed here again.

If the termination condition has been reached, the b-matching buyer orseller nodes matching an input buyer/seller node are selected asindicated at 1214, otherwise control returns to 1208.

The selected nodes are matched based on sorted belief values at 1214.For example, in a b-matching problem, the b nodes having the highestbelief values (i.e., profit values) with respect to an input node areselected. The selected nodes can be provided as output to anotherprocess or system. For example, the sellers corresponding to a selectedbuyer node can be displayed for the buyer (or vice versa). Processingthen ends at 1216.

FIG. 13 is a diagram of a system for resource allocation using beliefpropagation according to some embodiments of the disclosed subjectmatter. In particular, the system 1300 includes a resource allocationprovider 1302 that is coupled to a belief propagation system forresource allocation 1304. The resource allocation provider 1302 is alsocoupled to an electronic data store having stored therein datarepresenting a plurality of resources (1306-1308) each having arespective set of resource constraints/goals (1310-1312), and aplurality of projects (1314-1316) each having a respective set ofproject constraints/goals (1318-1320). The resource allocation provider1302 receives the resources (1306-1308) and resource constraints/goals(1310-1312), and the projects (1314-1316) and project constraints/goals(1318-1320), which can be used to generate a “profit” matrix formatching the resources with the projects. For example, resources may bereviewers for academic papers and the projects may be papers needing tobe reviewed. The resources (reviewers) may indicate constraints such asonly wanting to review a certain number of papers and may indicate goalssuch as a desired set of papers to review. The papers may havecorresponding constraints such as needing to be reviewed by at least xreviewers. A profit matrix can be generated that includes thepreferences of the reviewers as “profit” for matching them to a desiredpaper.

In response to the received resources (1306-1308) and resourceconstraints/goals (1310-1312), and projects (1314-1316) and projectconstraints/goals (1318-1320), the resource allocation provider 1302performs resource allocation using the belief propagation system forresource allocation 1304 to match each project with b resources (e.g.,such that the project's requirements are met and the resource'sconstraints are met), as described below with respect to FIG. 14. Theb-matching resources may be assigned to the project that they arematched with in order to complete the project. For example, a resultsset 1322 that has the b-matching between projects and resources can beprovided as output. Alternatively, the matches for a particular resourceor project can be communicated directly to that resource or project.

In this example, the nodes of the graph data structure representresources and projects. The profit matrix can have values based on aresource's desire for a project and/or limit of the number of projectsthat can be undertaken. For example, in the case of a resource, the bvalue can represent the number of projects that the resource can becommitted to (e.g., the number of papers that a reviewer wishes tocommit to reviewing). In the case of a project, the b value canrepresent the number of resources needed to meet the project constraint(e.g., each paper needs 3 reviewers). However, each node may also besubject to other constraints/goals on its belief value. Theseconstraints may affect whether or not a resource/project is selected asmatching for another resource/project, even if the profit for thatmatching is high enough that it would normally be selected.

FIG. 14 is a chart of a method of resource allocation using beliefpropagation according to some embodiments of the disclosed subjectmatter.

After beginning at 1402, a graph data structure is provided as indicatedat 1404. The graph data structure nodes or vertices represent resourcesand projects, and their respective constraints/goals, to be matched. Aprofit matrix is also provided. The profit matrix represents a “profit”value for each resource node connected to a corresponding project node.At 1406, variables are initialized. The latter operation may includeinitializing values of data storage elements that store the values ofthe most recent messages received by the node.

Next, at 1408, electronic messages are passed between adjacent orneighboring nodes. The details are not repeated since they are similarto the operations detailed above and below. The message passing can beperformed iteratively until a termination condition is met as indicatedby the conditional branch at 1412.

At 1410, belief values for each neighboring node are updated based onreceived messages and stored. In this and the other embodiments, thebelief values can be calculated once after the termination condition (asshown in the flow chart) or continuously updated prior to thetermination condition. The operations are described above and below andare therefore not detailed here again.

If the termination condition has been reached, the b-matching resourceor project nodes matching an input resource/project node are selected at1414, otherwise, control returns to 1408. The selected nodes are matchedbased on sorted belief values at 1410. For example, in a b-matchingproblem, the b nodes having the highest belief values (i.e., profitvalues) with respect to an input node are selected. The selected nodescan be provided as output to another process or system. For example, theprojects corresponding to a selected resource node can be displayed forthe resource (or vice versa). Processing then ends at 1416.

FIG. 15 is a diagram of a plurality of belief propagation processorsimplemented in hardware according to some embodiments of the disclosedsubject matter. In particular, a system 1500 includes a plurality ofbelief propagation processors (1502-1508 and 1512-1518). Each of theprocessors is coupled to a bus 1510. The belief propagation processorsare constructed for operating as nodes in a belief propagation systemfor generalized matching. The system 1500 can include processors thatare stand-alone or can represent a single semiconductor device havingmultiple belief propagation processors constructed thereon.

In operation, each hardware belief propagation processor performs thebelief propagation method described above for a single node. Thehardware details are shown in FIG. 16, which is a diagram of a hardwarebelief propagation processor according to some embodiments of thedisclosed subject matter.

In particular, the hardware belief propagation processor 1602 includes amultiplier section 1604, an adder section 1606, a sorter section 1608, amax unit 1610, a storage 1612 each coupled to an internal bus 1614. Theprocessor 1602 is coupled to an external bus 1616 in order tocommunicate with other processors and exchange messages 1618. Themessages 1618 include a “to” field, a “from” field and a value field.The “to” field specifies an intended recipient node of the message, the“from” field specifies the sending node, and the value field containsthe message value as calculated according to the message update processdescribed above.

In operation, the processor 1602 receives (or otherwise detects)messages on the external bus 1616. When a message is intended for theprocessor 1602, the processor 1602 (receives if necessary and) stores itin the storage at a location corresponding to the sender node of themessage. Processor 1602 can then calculate an updated message value tothe nodes stored in its storage as neighbor or adjacent nodes and cansend the updated messages to each corresponding neighbor node. Thesections and units of the processor 1602 are used to perform thecalculations required for determining updated messages and beliefvalues. The processor 1602 can also transmit its b-matching nodes toanother processor or system via the external bus 1616.

The processor 1602 may be implemented as a stand alone device or may beincorporated into a device having other circuitry including other beliefpropagation processor nodes.

The b value for matching mentioned above can be a constant value and thesame for all nodes. Alternatively, each node can have an independent bvalue that can be different from that of the other nodes. Also, insteadof being a constant value, the b value can be described as adistribution over a range of values. Problems with distributions ofb-values (or degrees of connectedness between nodes) are known as degreedistribution problems.

Examples of degree distribution problems include auctions where eachbuyer and seller may select an independent number (or capacity) ofcorresponding buyers/sellers or may have a range of capacities they canhandle but incur different costs. Also a degree distribution problem canarise for cases in which the capacity changes over time, such as when adesired number of possible connections changes according to a quotawhich varies dynamically. Conventional approaches to solving b-matchingproblems may not be effective for solving degree distribution problems.

The belief propagation methods and systems of the disclosed subjectmatter, of either linear or distributed forms, can be used to solvedegree distribution problems if the graph data structure and weight (orprofit) matrix are adjusted according to the following technique.

Referring to FIG. 17A, as an example, an auction problem may have agroup of n seller nodes each having a degree distribution ψ_(i)(j) overn possible matches, where j refers to a particular number of matchesthat can be made (a variable version of b in the situation where thenumber of desired matches is a constant). Also, the problem may have agroup of n buyer nodes each having a degree distribution φ_(i)(j) over npossible matches, where j, again, refers to a particular number ofmatches. The degree distributions ψ_(i)(j) or φ_(i)(j) represent anapportionment of the desirability (or profitability or value) of therespective number (j) of matches.

A first example illustrates a special case 1702 in which each sellerdesires to indicate a particular number of matches it will accept. Thenumber of acceptable matches may vary according to each seller andbuyer. Sellers are represented in the example by ψ_(i)(j) and buyers byφ_(i)(j). A second example 1704 illustrates the case of a seller j whomay accept matches to 2 or 3 buyers but no other numbers of matches andhe could set his degree distributions to reflect a profitability for 2matches that is two times his profitability for 3 matches. This relativeprofitability might reflect operating costs above normal capacity tosupply to 3 buyers, for example. The seller's actual or relative profitfor matching to any given buyer is represented in the W matrixindependently of the relative profitability reflected in the degreedistribution. But the weight (profit) matrix values are discountedcomputationally as discussed below based on the relative profitabilityrelating to the number of matches.

In the example 1704 of the seller, to make the calculation, the ψ_(i)(j)and φ_(i)(j) are calculated in an expanded matrix (described below) asthe natural logs of the relative profitabilities, namely, ⅓ and ⅔,requiring the sum over the degree distribution to be equal to 1. In thatcase, exp[ψ_(i)(2)]=⅔ and exp[ψ_(i)(3)]=⅓. Exponentials of all the otherψ_(i)(j) will be zero. Then ψ_(i)(2)=ln(⅔) or −0.405 and ψ_(i)(3)=ln(⅓)or −1.099. All the other values of ψ_(i)(j) may be set to very negativenumbers, for example negative 10 million or their differentials,discussed below, set to zero or large numbers which would be equivalentas will be seen further below. The buyers can come to the same matchingcalculation and give completely different degree distributions for thesame calculation resulting in the φ_(i)(j).

The degree distributions can be represented in any suitable way, forexample, as tables corresponding to each buyer or seller node. As above,these may be stored in an electronic memory or multiple electronicmemories in a distributed computation setting, respective to aparticular node or respective to several nodes, but not all.

Referring to FIG. 17B, to solve the degree distribution problem, theweight matrix W that represents the value (or relative value) of eachmatch, is expanded, doubling its size to generate an expanded weightmatrix W′. The original weight matrix W (which reflects, for example,the negotiated price for a good to be sold by seller i to buyer k) formsthe upper left quadrant of the expanded weight matrix W′. The upperright quadrant of the expanded weight matrix W′ includes ψ_(i)(j) deltavalues such as, starting at the first row: ψ₁(0)-ψ₁(1), . . . ,ψ₁(n−1)-ψ₁(n), and so on until the last row ψ_(n)(0)-ψ_(n)(1), . . . ,ψ_(n)(n−1)-ψ_(n)(n). The lower left quadrant of the expanded weightmatrix W′ includes φ_(i)(j) delta values such as, starting at the firstrow: φ₁(0)-φ₁(1), . . . , φ_(n)(0)-φ_(n)(1), and so on until the lastrow φ₁(n−1)-φ₁(n), . . . , φ_(n)(n−1)-φ_(n)(n). The lower right quadrantvalues can all be set to zero.

The bipartite graph is expanded by adding to the seller and buyer nodes,dummy nodes to double the number of sellers and buyers. Thus, if thereare n buyers and n sellers, an additional n buyers and n sellers areappended. These dummy nodes correspond to the appended delta valuesψ_(i)(j), φ_(j)(j), or 0, respectively in the expanded weight matrix W′.In cases where the number of sellers differs from the number of buyers,the larger of the two is used as the expanded weight matrix size and thesmaller side of the original weight matrix is expanded with small values(e.g., zero or negative maximum value) and dummy nodes are added to thegraph data. These complete a square original and expanded weight matrixand original and expanded bipartite graph. The expanded nodes are dummynodes similar to those used for the expanded weight matrix.

Once the expanded weight matrix W′ is created and the dummy nodes areprovided, the methods described above, for example with reference toFIGS. 2A through 2E, can be applied to the expanded graph and weightdata. In distributed processing, the number of node processors maysimply be doubled, for example, to have each processor operate andreceive and send messages relating to a respective node. The value of bused for solving the problem may be set to n, namely, the number ofbuyers and sellers (noting that some of the buyers and sellers may bedummies and not real buyers or sellers). Once the matching problem issolved on the expanded graph using the expanded weight matrix W′, as ab-matching problem, (b=n), according to the disclosed belief propagationmethods and systems, the b-matching solution for the original graph andweight matrix is obtained by extracting the upper left quadrant of amatrix representing the matches on the expanded graph.

The b-matching solution may be represented as a binary matrix where eachvalue in the matrix includes a 1 or 0, and where a 1 represents amatching between a buyer/seller pair corresponding to that element ofthe matrix, and a 0 corresponds to no match being made for thatbuyer/seller pair. The degree distribution technique is described inmore detail with background and mathematical proofs in Appendix II.

As mentioned, the above approach can be applied in embodiments describedabove in which the matching problem is solved using multiple processorsexcept that the number of processors may be doubled to process thelarger number of disjoint sets. So in an example of matching buyers tosellers, there would be twice the number of buyer processors and twicethe number of seller processors with half of each being assigned to thedummy nodes.

In some of the above embodiments relating to the assignment of webadvertisements according to bids, various factors can be used to modifythe weight value of the weight matrix used to represent the matchingproblem. These can include: click through rate; how many times a userselects a given ad in a given session; a duration of time, from an adresult selection, until the user issues another search query, which mayinclude time spent on other pages (reached via a search result click orad click) subsequent to a given ad click; a ratio of the time, from agiven ad result selection until a user issues another search query, ascompared to all other times from ad result selections until the userissued another search query; time spent, given an ad result selection,on viewing other results for the search query, but not on the given adresult; how many searches (i.e., a unique issued search query) thatoccur in a given session prior to a given search result or ad selection;how many searches that occur in a given session after a given searchresult or ad selection; rather than searches, how many result page viewsthat occur for a given search query before a given selection, this canbe computed within the query (i.e., just for a unique query), or for theentire session; and rather than searches, how many search result pageviews that occur for a given search query after this selection, this canbe computed within the query (i.e., just for the unique query), or forthe entire session.

Embodiments of the method, system, one or more computers program productand one or more computers readable media for generalized matching usingbelief propagation, may be implemented on a general-purpose one or morecomputers, a special-purpose one or more computers, a programmedmicroprocessor or microcontroller and peripheral integrated circuitelement, an ASIC or other integrated circuit, a digital signalprocessor, a hardwired electronic or logic circuit such as a discreteelement circuit, a programmed logic device such as a PLD, PLA, FPGA,PAL, or the like. In general, any process capable of implementing thefunctions or processes described herein can be used to implementembodiments of the method, system, or one or more computers programproduct for generalized matching using belief propagation.

Furthermore, embodiments of the disclosed method, software, and one ormore computers program product (or one or more computer readable media)for generalized matching using belief propagation may be readilyimplemented, fully or partially, in software using, for example, objector object-oriented software development environments that provideportable source code that can be used on a variety of one or morecomputers platforms. Alternatively, embodiments of the disclosed methodfor correcting generalized matching using belief propagation can beimplemented partially or fully in hardware using, for example, standardlogic circuits or a VLSI design. Other hardware or software can be usedto implement embodiments depending on the speed and/or efficiencyrequirements of the systems, the particular function, and/or aparticular software or hardware system, microprocessor, or one or morecomputers system being utilized. Embodiments of the method, system, andone or more computer program products for generalized matching usingbelief propagation can be implemented in hardware and/or software usingany known or later developed systems or structures, devices and/orsoftware by those of ordinary skill in the applicable art from thefunctional description provided herein and with a general basicknowledge of the one or more computers arts.

Moreover, embodiments of the disclosed method for generalized matchingusing belief propagation can be implemented in software stored on one ormore computer readable media (or provided as one or more computerprogram products) and adapted to be executed on a programmedgeneral-purpose one or more computers, a special purpose one or morecomputers, a microprocessor, or the like. Also, the generalized matchingusing belief propagation method of this invention can be implemented asa program embedded on a personal one or more computers such as a JAVA®or CGI script, as a resource residing on a server or graphicsworkstation, as a routine embedded in a dedicated processing system, orthe like. The method and system can also be implemented by physicallyincorporating the method for generalized matching using beliefpropagation into a software and/or hardware system, such as the hardwareand software systems of a search engine, online auction, online dating,resource allocation, or image processing system.

Note that while many of the operations described herein are described interms of mathematical functions and operations, such functions andoperations can be approximated while still permitting the solutions ofthe respective problems to be achieved. For example, the exponentialfunction, multiplication functions, and/or logarithmic functions mayhave computational analogs or approximations that may be used toimplement them. Thus, in using the mathematical terms in the abovediscussion it should be understood that the embodiments include those inwhich such approximations are used.

Note that in all embodiments where a system or component loads softwareor data from a storage device or computer readable media, it will beunderstood that modifications of such embodiments are possible andconsidered within the embodiments of the disclosed subject matter. Forexample, data may be read from a stream provided by a remote datastorage device operating according to any principle including volatileor nonvolatile memory. An “Internet drive,” network attached storage,distributed storage, or any other suitable device may also be used.

It is, therefore, apparent that there is provided in accordance with thepresent invention, a method, system, one or more computer programproducts and one or more computer readable media with software forgeneralized matching using belief propagation. While this invention hasbeen described in conjunction with a number of embodiments, it isevident that many alternatives, modifications and variations would be orare apparent to those of ordinary skill in the applicable arts.Accordingly, applicants intend to embrace all such alternatives,modifications, equivalents and variations that are within the spirit andscope of this invention.

1-69. (canceled)
 70. A method for matching using belief propagation,comprising: receiving and storing first node data identifying a firstset of nodes; receiving and storing second node data identifying asecond set of nodes; receiving and storing quota data identifying amaximum number of nodes within the second set of nodes to be matchedwith for each node within the first set of nodes; retrieving and storingthe first node data, the second node data, and the quota data whichtogether form bipartite graph data, so as to provide access to a portionof the bipartite graph data corresponding to a subset of the nodes inthe first node data that correspond to one or more, but not all, secondnodes in the second node data, by multiple connected processors;executing, on each of the processors, a matching process that includesreceiving messages from, and generating and sending messages to, themultiple connected processors to others of the multiple connectedprocessors, until a termination condition is reached.
 71. The method ofclaim 70, the matching process further comprising: calculating one ormore intermediate values for each neighboring second node of a selectedfirst node that is based on received messages; sorting the one or moreintermediate values; selecting an intermediate value from the one ormore intermediate values based on the quota data for the selected firstnode; and calculating a new message based on the received messages, andthe selected intermediate value.
 72. The method of claim 70, wherein atleast some of the messages include scalars; and in each processor, thegenerating including dividing ratios of functions of a respective firstnode corresponding to a respective portion of the bipartite graph databy respective scalars received.
 73. The method of claim 72, wherein thedata content of each message is a single scalar value.
 74. The method ofclaim 73, wherein the single scalar value corresponds to a potentialmatching of the selected first node with a respective one of itsneighboring second nodes.
 75. The method of claim 70, wherein thefunctions are substantial equivalents of exponentials.
 76. The method ofclaim 70, wherein the first set of nodes comprises auction buyers andtheir respective goods/services to be matched, and wherein the secondset of nodes comprises auction sellers and their respectivegoods/services to be matched.
 77. The method of claim 70, wherein thetermination condition is a predetermined number of iterations of thegenerating and sending of the messages.
 78. The method of claim 70,wherein the termination condition is defined as receiving no changedmessage values within a predetermined period of time.
 79. The method ofclaim 70, wherein the termination condition is a number of messages sentfrom each node.
 80. The method of claim 70, wherein the terminationcondition is an elapsing of a predetermined period of time.
 81. Acomputer readable medium having software instructions stored thereon formatching using belief propagation, the software instructions, whenexecuted by a processor, cause the processor to perform operationscomprising: receiving and storing first node data identifying a firstset of nodes; receiving and storing second node data identifying asecond set of nodes; receiving and storing quota data identifying amaximum number of nodes within the second set of nodes to be matchedwith for each node within the first set of nodes; retrieving and storingthe first node data, the second node data, and the quota data whichtogether form bipartite graph data, so as to provide access to a portionof the bipartite graph data corresponding to a subset of the nodes inthe first node data that correspond to one or more, but not all, secondnodes in the second node data, by multiple connected processors;executing, on each of the processors, a matching process that includesreceiving messages from, and generating and sending messages to, themultiple connected processors to others of the multiple connectedprocessors, until a termination condition is reached.
 82. The computerreadable medium of claim 81, the matching process further comprising:calculating one or more intermediate values for each neighboring secondnode of a selected first node that is based on received messages;sorting the one or more intermediate values; selecting an intermediatevalue from the one or more intermediate values based on the quota datafor the selected first node; and calculating a new message based on thereceived messages, and the selected intermediate value.
 83. The computerreadable medium of claim 81, wherein the first set of nodes comprisesauction buyers and their respective goods/services to be matched, andwherein the second set of nodes comprises auction sellers and theirrespective goods/services to be matched.
 84. The computer readablemedium of claim 81, wherein the termination condition is a predeterminednumber of iterations of the generating and sending of the messages. 85.The computer readable medium of claim 81, wherein the terminationcondition is defined as receiving no changed message values within apredetermined period of time.
 86. A distributed processing system formatching using belief propagation, the system comprising: a plurality ofprocessors each corresponding to a node of a graph data structure havinga first set of nodes and a second set of nodes where each node from thefirst set of nodes is a neighbor to at least one node from the secondset of nodes; a network coupling the plurality of processors and adaptedto transfer messages between the processors; wherein each processor isadapted to load and execute software instructions stored on a computerreadable medium, the software instructions, when executed, cause theprocessor to perform operations including: receiving and storing firstnode data identifying the first set of nodes; receiving and storingsecond node data identifying the second set of nodes; receiving andstoring quota data identifying a maximum number of nodes within thesecond set of nodes to be matched with for each node within the firstset of nodes; retrieving and storing the first node data, the secondnode data, and the quota data which together form bipartite graph data,so as to provide access to a portion of the bipartite graph datacorresponding to a subset of the nodes in the first node data thatcorrespond to one or more, but not all, second nodes in the second nodedata; executing, on each of the processors, a matching process thatincludes receiving messages from, and generating and sending messagesto, the plurality of processors to others of the plurality ofprocessors, until a termination condition is reached.
 87. The system ofclaim 86, the matching process further comprising: calculating one ormore intermediate values for each neighboring second node of a selectedfirst node that is based on received messages; sorting the one or moreintermediate values; selecting an intermediate value from the one ormore intermediate values based on the quota data for the selected firstnode; and calculating a new message based on the received messages, andthe selected intermediate value.
 88. The system of claim 86, wherein thefirst set of nodes comprises auction buyers and their respectivegoods/services to be matched, and wherein the second set of nodescomprises auction sellers and their respective goods/services to bematched.
 89. The system of claim 86, wherein the termination conditionis a predetermined number of iterations of the generating and sending ofthe messages.